<?php

/**
 * 
 * @author Shane
 *
 */
class GameDAO extends AbstractDAO {
	
	/**
	 * Der Konstruktor stattet die DAO mit einem DB Objekt aus
	 * und erzeugt die Tabellen 'Game' wenn diese in der 
	 * Datenbank nicht existiert
	 */
	function __construct() {
		
		parent::__construct('Game');
		
		// 'Game' TODO tabelle vervollständigen
		{	// Wenn es die Tabelle nicht gibt, dann soll diese erzeugt werden
			$sql = 'CREATE TABLE IF NOT EXISTS '.Game::$tablename.' (
						ID INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
						Active BOOLEAN NOT NULL,
						Title VARCHAR(50) NOT NULL,
						Subtitle VARCHAR(50),
						Coverimage VARCHAR(255),
						DateOfCreation DATETIME NOT NULL,
						Publischer VARCHAR(50),
						Developer VARCHAR(50),
						Genre CLOB,
						Rated CLOB,
						Platforms CLOB
   					)';
			
			$db = DBFactory::getInstance();

			// Query vorbereiten
			if (!$stmt = $db->prepare($sql)) {
				// error
				$this->logger->logFile('Database error creating table '.Game::$tablename.': '. $db->error, LEVEL_ERROR);
				
				return null;
			}

			// Statement ausführen
			if (!$stmt->execute()) {
				// error
				$this->logger->logFile('Statement error creating table '.Game::$tablename.': '. $stmt->error, LEVEL_ERROR);
				
				return null;
			}

			// Statement beenden
			$stmt->close();
			
			unset($db);
		}
	}

	/**
	 * Der Destruktor entfernt die Referenz auf das DB Objekt
	 */
	function __destruct() {
		parent::__destruct();
	}
	
	/**
	 * Diese Funktion vergleicht das übergebene Spiel mit dem in der Datenbank und 
	 * Updated die unterschiedlihen Datensätze
	 * @param Game $game
	 */
	function update($game) {
		// TODO	
	}
	
	public function exists($entity) {
		// TODO	
	} 
	
	public function pre_delete($entity) {
		// TODO
	}
}

?>